package org.moyrax.nereyda.services.template
{
	import org.moyrax.nereyda.services.core.Request;
	
	import flash.events.Event;
	
	public interface IContentFactory
	{
		/**
		 * Controlará la respuesta del servidor,
		 * y creará el objeto que corresponda.
		 */
		function parseResponse  ( responseEvent :Event ):IServiceResponse;
		
		/**
		 * Controlará los errores que se produzcan
		 * al realizar las peticiones al servidor.
		 */
		function parseError     ( errorEvent    :Event ):IServiceResponse;
		
		/**
		 * Crea una cadena para enviar como 
		 * parámetros a través de la URI.
		 */
		function makeRequestStr ( request:Request ):String;
		
		/**
		 * Crea un objeto con todos los parámetros
		 * vinculados a la petición especificada.
		 */
		function makeRequest    ( request:Request ):Object;
		
		/**
		 * Devuelve o establece qué tipo de encriptación
		 * se utilizará para enviar la petición.
		 */
		function get encoder():String;
		function set encoder( value:String ):void;
				
		/**
		 * Establece el controlador de mapeos de esta
		 * factory. Utilizará los mapeos de objetos de
		 * servicio contenidos dentro del controlador
		 * para convertir las respuestas del servidor
		 * en objetos.
		 */
		function get mappings():IMappingController
		function set mappings( mapper:IMappingController ):void;
		
		/**
		 * Crea el evento asociado a un objeto de servicio.
		 * 
		 * @param serviceObject Objeto de servicio vinculado al evento.
		 */
		function createEvent( serviceObject:IServiceObject ):IServiceEvent;
	}
}